#ifndef BINTREE_H
#define BINTREE_H
#include <vector>
#include <cstddef>
//This is a data structure of a binary tree

class Node
{
private:
    int value;
    Node* lChild;
    Node* rChild;
public:
    Node(){ lChild = NULL; rChild = NULL;}
    Node(int n) { value = n; lChild = NULL; rChild = NULL;}
    int getValue() {return value; }
    void setVale(int n) {value = n; }
    void setRChild(Node *RC) { rChild =  RC; }
    void setLChild(Node *LC) { lChild =  LC; }
    Node* getLChild() { return lChild; }
    Node* getRChild() { return rChild; }
};

class BinTree
{
private:
    Node * root;
public:
    BinTree();      //create a bin tree
    std::vector<Node *> preOrderTraverse();    //just traverse the tree and print each values out.
    std::vector<Node *> postOrderTraverse();
    std::vector<Node *> inOrderTraverse();
    std::vector<Node *> levelTraverse();
    
};
#endif
